﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommonLibraries.DeviceLibrary
{
    interface ICamera
    {
        /// <summary>
        /// Occurs when PowerSource changes
        /// </summary>
        event EventHandler PowerStateChanged;

        /// <summary>
        /// Gets or sets the camera brightness
        /// </summary>
        int Brightness
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the camera sharpness
        /// </summary>
        int Sharpness
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the camera power state
        /// </summary>
        PowerStates PowerState
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the camera mode
        /// </summary>
        CameraModes PictureMode
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the camera zoom level
        /// </summary>
        ZoomLevels Zoom
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the camera image overlay
        /// </summary>
        /// <remarks>Use null to remove existing overlay image</remarks>
        System.Drawing.Bitmap Overlay
        {
            get;
            set;
        }

        /// <summary>
        /// Takes a picture based on current device settings
        /// </summary>
        /// <param name="longitude">Current value to be embedded into image</param>
        /// <param name="latitude">Current value to be embedded into image</param>
        /// <param name="altitude">Current value to be embedded into image</param>
        /// <param name="bearing">Current value to be embedded into image</param>
        /// <param name="PDOP">Current value to be embedded into image</param>
        /// <returns>Returns byte array of current image</returns>
        System.Drawing.Bitmap TakePicture(double longitude, double latitude, double altitude, double bearing, int PDOP);

        /// <summary>
        /// Sets the sound to be played when camera takes picture
        /// </summary>
        /// <param name="path">WAV file path</param>
        /// <returns>Success</returns>
        bool SetSound(string path);
    }
}
